Spring的2个基本概念
1
| <bean id=“userService” class=“com.geng.UserService” />
|
1 2 3 4 5 6 7
| public class Factory { public static UserService getUserService() { String classValue = dom4j.getValue(“userService”); Class clazz = Class.forName(“classValue”); return clazz.newInstance(); } }
|
Spring 运行时
Spring 提供了全面的Java web 服务框架,从web层到业务层,再到持久层,都有着相关模块的实现。
对于Spring 最基本使用,必须尹若 Core Container中的4个重要的部分,方可使用。
若只引用某部分的库,maven也会自动引用最核心的jar包到你的应用中。
Spring 第一个Demo 开发
在 idea 中,创建 maven 项目,然后,编辑 pom.xml 文件。
引入:Spring 主要的几个库,log4j,junit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
|
在resource 目录下,创建 xml 配置文件,如图:
Idea 在你编辑时候,会提示相关的属性,方便书写配置
1 2 3 4 5 6 7 8
| <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd”> <bean id="user" class="com.geng.ioc.User"/> </beans>
|
创建测试用例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class UserTest { private ApplicationContext context; @Before public void setUp() throws Exception { context = new ClassPathXmlApplicationContext("beans1.xml"); } @Test public void add() throws Exception { User user = (User) context.getBean("user"); user.add(); } }
|
至此,我们完成了第一个 Spring demo
bean 的管理
- 通过无参构造创建(前面第一个demo)
- 通过静态工厂实现对象创建
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class BeanFactory { public static User2 createUser2() { return new User2(); } } public class User2 { public void add() { System.out.println("user2.....”); } }
|
xml中配置:
1 2
| <bean id="user2" class="com.geng.ioc.BeanFactory" factory-method="createUser2”/>
|
测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class User2Test { private ApplicationContext context; @Before public void setUp() throws Exception { context = new ClassPathXmlApplicationContext("beans1.xml"); } @Test public void add() throws Exception { User2 user2 = (User2) context.getBean("user2"); System.out.println(user2); user2.add(); } }
|
1 2 3
| <bean id="bean2Factory" class="com.geng.ioc.Bean2Factory" /> <bean id="user2" factory-bean="bean2Factory" factory-method="getBean"/>
|
这里不再验证。。。
Spring配置文件中的几个重要属性
id:不能还有特殊符号,“_”是可以的
name:可以含有特殊符号,如:#,历史版本中使用的,后期不推荐使用。context.getBean() 方法可以获取这两种属性的值
class:类的全路径
scope:作用域
singleton(默认)
prototype(多例)
request 创建对象放在request域
session 创建对象放在session域
globalSession 一次登陆,任何地方都保存有登录状态
附录:IDEA Resource 目录下,存放的文件类型
(IDEA 官网:https://www.jetbrains.com/help/idea/2016.3/resource-files.html )
所以,在此目录下,我们一般存放配置文件,或一些必要的资源文件。
Demo 地址:
https://github.com/fenglincanyi/springdemo1